package com.liner;

import java.util.Arrays;

public class ArrayDemo {
    public static void main(String[] args) {

        //数组的复制


        //灵活性更好  但会报错 数组下标越界
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int[] arr2 = new int[12];
        //1:源数组的起始下标
        // b:目标数组
        //0:目标数组的起始下标
        // 4:要复制的元素个数

        //System.arraycopy(arr, 0, arr2, 0, arr.length); //1 2 3 4 5 6 7 8 9 10 0 0
        System.arraycopy(arr, 2, arr2, 2, 5);    //0 0 3 4 5 6 7 0 0 0 0 0
        //System.arraycopy(arr, 3, arr2, 5, 7);   //0 0 3 4 5 4 5 6 7 8 9 10
        //System.arraycopy(arr, 3, arr2, 0, 8);  // 源数组复制的长度不够  ArrayIndexOutOfBoundsException
        //System.arraycopy(arr, 3, arr2, 10, 5);  // 被复制的数组的长度不够   ArrayIndexOutOfBoundsException


        for (int j : arr) {
            System.out.print(j + " ");
        }
        System.out.println();
        for (int k : arr2) {
            System.out.print(k + " ");
        }
        System.out.println();

        //复制文件，将 a整体复制到 b
        //灵活性差一点  但不会报错 数组下标越界




        // a:源数组
        // b:目标数组
        //arr.length:目标数组的长度
        //-–若目标数组长度>源数组长度，则末尾补默认值
        //-–若目标数组长度<源数组长度，则将末尾截掉
        int[] ints = Arrays.copyOf(arr, arr.length);
        System.out.println(Arrays.toString(ints));


        //Arrays.copyOf()   可用于扩容
        ints = Arrays.copyOf(arr, arr.length - 2);
        System.out.println(Arrays.toString(ints));
        ints = Arrays.copyOf(arr, arr.length + 2);
        System.out.println(Arrays.toString(ints));





    }
}
